package com.freemalll.merchant.service.merchantAuditManage;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.freemalll.merchant.domain.dto.*;
import com.freemalll.merchant.domain.vo.*;

import java.util.List;

public interface MerchantAuditManageService {


    /**
     * 根据商户id获取详情
     *
     * @param merId
     * @return
     */
    MerchantAuditVo getMerInfoById(String merId, String listType);


    /**
     * 获取需要补件的附件以及详情
     *
     * @param merId
     * @return
     */
    HistoryDeletedListVO getSupplementAttachInfoList(String merId);

    /**
     * 附件照片下结论
     *
     * @param vo
     */
    void editMerchantInfo(MerAttachDto vo);


    /**
     * 编辑商户信息
     *
     * @param vo
     */
    void editMerchantInfo(MerchantAuditDetailVo vo);


    /**
     * 编辑证照信息
     *
     * @param dto
     */
    void editBusinessLicense(BusinessLicenseDto dto);

    /**
     * 编辑法人信息
     *
     * @param dto
     */
    void editCorporateInfo(CorporateInfoDto dto);

    /**
     * 编辑执业许可证
     *
     * @param dto
     */
    void editMedicalLicense(MedicalLicenseDto dto);

    /**
     * 编辑经营场所
     *
     * @param dto
     */
    void editMerVenueInfo(MerVenueInfoDto dto);

    /**
     * 编辑开户信息
     *
     * @param dto
     */
    void editMerAccountLicense(MerAccountLicenseDto dto);

    /**
     * 编辑商户经营信息
     *
     * @param dto
     */
    void editMerBusinessInfo(MerBusinessInfoDto dto);

    /**
     * 编辑收款户信息
     *
     * @param dto
     */
    void editMerInstallmentInfo(MerInstallmentInfoDto dto);

    /**
     * 分页
     *
     * @param dto
     * @return
     */
    Page<MerchantAuditPageVo> listPage(MerchantAuditManageDto dto);

    /**
     * 记录日志分页
     *
     * @param dto
     * @return
     */
    List<MerchantAuditEditPageVo> auditEditPage(MerMerchantAuditEditLogDto dto);

    /**
     * 审批流程记录分页
     *
     * @param dto
     * @return
     */
    List<MerAuthFlowLogPageVo> flowPage(MerAuthFlowLogDto dto);


    /**
     * 商户审核
     *
     * @param dto
     */
    void merchantAudit(MerchantAuditDto dto);

    /**
     * 编辑资方顺位
     *
     * @param vo
     */
    void editCapitalOrder(List<MerMerchantCapitalOrderDto> vo);

    /**
     * 获取商户评级和额度
     *
     * @param merId
     * @return
     */
    JSONObject getMerchantLevelAndAmount(String merId);

    /**
     * 编辑执业许可证教育办学
     *
     * @param dto
     */
    void editMedicalEduLicense(MedicalEduLicenseDto dto);

    /**
     * 编辑执业许可证教育机构
     *
     * @param dto
     */
    void editMedicalEduIcpLicense(MedicalEduIcpLicenseDto dto);

    /**
     * 编辑收款户信息
     *
     * @param backCardDtos
     */
    void editBackCardListInfo(List<MerBackCardDto> backCardDtos);

    /**
     * 编辑费率信息信息
     *
     * @param merchantRateDtos
     */
    void editMerchantRateInfo(List<MerchantRateDto> merchantRateDtos);

    /**
     * 各审核状态总数量统计
     *
     * @param dto
     * @return
     */
    MerchantApplyCountVo countByAuthStatus(MerchantAuditManageDto dto);
}
